from __future__ import print_function
import paho.mqtt.client as mqtt
from unide.util import loads


# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    # client.subscribe("$SYS/#")
    client.subscribe("samples")


# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    msg = loads(msg.payload)
    print(msg)


if __name__ == "__main__":
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message

    client.connect("localhost", 1883, 60)

    # Blocking call that processes network traffic, dispatches
    # callbacks and handles reconnecting.  Other loop*() functions are
    # available that give a threaded interface and a manual interface.
    client.loop_forever()
